Red Hat System Administration II 8.2

Упражнение под руководством преподавателя: Более эффективное выполнение команд с помощью циклов

В этом упражнении вы будете использовать циклы для вывода имени хоста с нескольких серверов.

Результаты

Вы сможете создать цикл for для перебора элементов списка из командной строки и в сценарии командной оболочки.

Войдите на workstation как пользователь student с паролем student.

На workstation выполните команду lab console-commands start. Эта команда запускает подготовительный сценарий, который проверяет доступность хостов servera и serverb в сети. Сценарий выдаст предупреждение, если они недоступны.

[student@workstation ~]$ lab console-commands start
  1. С помощью команд ssh и hostname отправьте имена хостов servera и serverb в стандартный поток вывода.

    [student@workstation ~]$ ssh student@servera hostname
    servera.lab.example.com
    [student@workstation ~]$ ssh student@serverb hostname
    serverb.lab.example.com
    
  2. Создайте цикл for для более эффективного выполнения этой же задачи.

    [student@workstation ~]$ for HOST in servera serverb
    do
    ssh student@${HOST} hostname
    done
    servera.lab.example.com
    serverb.lab.example.com
    
  3. Создайте сценарий командной оболочки для выполнения этого же цикла for.

    1. Создайте каталог /home/student/bin для сценария командной оболочки.

      [student@workstation ~]$ mkdir ~/bin
    2. Убедитесь, что созданный каталог есть в вашей переменной среды PATH.

      [student@workstation ~]$ echo $PATH
      /home/student/.local/bin:/home/student/bin::/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
      
    3. Создайте в /home/student/bin/printhostname.sh сценарий командной оболочки для выполнения цикла for. С помощью команды cat проверьте содержимое файла printhostname.sh.

      [student@workstation ~]$ vim ~/bin/printhostname.sh
      [student@workstation ~]$ cat ~/bin/printhostname.sh
      #!/bin/bash
      #Execute for loop to print server hostname.
      for HOST in servera serverb
      do
        ssh student@${HOST} hostname
      done
      exit 0
      
    4. Убедитесь, что созданный сценарий является исполняемым.

      [student@workstation ~]$ chmod +x ~/bin/printhostname.sh
    5. Запустите сценарий из домашнего каталога.

      [student@workstation ~]$ printhostname.sh
      servera.lab.example.com
      serverb.lab.example.com
      
    6. Убедитесь, что код завершения сценария ― 0.

      [student@workstation ~]$ echo $?
      0
      

Конец

На workstation запустите сценарий lab console-commands finish, чтобы закончить упражнение.

[student@workstation ~]$ lab console-commands finish

Упражнение завершено.